热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Bug死磕之hue集成的oozie+pig出现资源任务死锁问题

这两天,打算给现有的ApacheHadoop2.7.1的集群装个hue,方便业务人员使用hue的可视化界面,来做一些数据分析任务,这过程遇到不少问题,不过大部分最终都一一击



这两天,打算给现有的Apache Hadoop2.7.1的集群装个hue,方便业务人员使用hue的可视化界面,来做一些数据分析任务,这过程遇到不少问题,不过大部分最终都一一击破,收获经验若干,折腾的过程,其实也是一个学习的过程,一个历练的过程,我相信优秀的人,都是经历过无数磨难成就的,并且有着坚持不放弃的心态,迎接各种挑战,如果你总是遇到困难就放弃,那么你永远也不能成为最优秀的人,废话不多说了,下面开始进入正题: 

一安装hue 

1,到官网下载   http://gethue.com/categ
2,解压到某个目录hue 
3,安装依赖:yum install -y asciidoc cyrus-sasl-deve++ krb5-devel  libtidy  libxml2-devel libxslt-devel make mysql mysql-devel openldap-devel python-devel   sqlite-devel openssl-devel  gmp-devel 
4,进入hue目录,运行make apps编译 
5,配置desktop/conf/hue.ini 
6,启动build/env/bin/supervisor 杀死脚本(ps -ef | grep hue-  | gawk '{print $2}' | xargs kill -9) 

伦理片 http://www.dotdy.com/

如果你的hue只是用来操作hive的,那么没必要安装oozie了,那么整个流程就简单了,进入hive目录启动memstore和hiveserver2服务即可: 
bin/hive --service metastore 
bin/hiveserver2 
一个使用hue查询的hive的查询如下: 




很漂亮,用来调试sql非常方便,如果你想使用工作流或者pig功能,那么就需要安装oozie了 
oozie安装编译比较坑,这里需要注意一下,目前最新的版本oozie的最新版本是4.2.0,但是依赖的 
hive只支持0.13.1 
hbase支持到0.94.2 
spark,hadoop,pig均可支持当然最新版本 
而且pom文件里面用到的codehash镜像已经失效,如果不去掉,则会编译失败: 

Java代码   收藏代码
  1.   
  2.            Codehaus repository  
  3.            http://repository.codehaus.org/  
  4.              
  5.                false  
  6.              
  7.          


(二) 安装oozie 
1,下载oozie 
wget  http://archive.apache.org/dist/oozie/4.2.0/oozie-4.2.0.tar.gz 

2,解压至某个盘符,修改其根目录下的pom文件里面的pig(加载类是h2,代表hadoop2.x),hadoop,hbase,hive,spark等版本,hbase和hive使用最新的可能会编译失败,这一点需要注意,经测试hbase0.94.2和hive0.13.1可正常编译通过, 

3,修改完毕后,执行编译 
bin/mkdistro.sh -P hadoop-2 -DskipTests 
或 
mvn clean package assembly:single -P hadoop-2 -DskipTests 
4,执行成功后,拷贝oozie-4.2.0/distro/target/oozie-4.2.0-distro.tar.gz 至安装目录, 
具体请参考我的这篇文章: 

(三)在hue里面测试pig脚本: 

写一个简单的pig脚本: 





点击运行,发现oozie会启动两个任务,一个是launcher,一个pig脚本,lancher任务一直卡着95%进度,不再有任何变化,而主体的pig脚本,则一直在初始化阶段,不能被执行,看日志log无任何错误,就是一直打印 
Heart beat 
Heart beat 
Heart beat 
...... 

经过查资料,发现在集群小的时候,如果集群资源不充足,导致RM无法分配多个MR的资源,就会一直等待,然后整个任务就会处于假死状态,一直死锁不运行,其实就是多个MR任务,抢占资源,导致最后谁也运行不了造成的,如何解决? 

方案一: 
切换haodop集群默认使用的容量调度器为公平调度器,允许当前队列最多只能运行一个MR任务,多了就阻塞等待。 
方案二: 
切换haodop集群默认使用的容量调度器为公平调度器,创建多个队列把任务提交到不同的队列里面,避免资源抢占 

Xml代码   收藏代码
  1. <property>  
  2.    <name>yarn.resourcemanager.scheduler.classname>  
  3.    <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairSchedulervalue>  
  4.  property>  
  5.   
  6.   
  7.  <property>  
  8.  <name>yarn.scheduler.fair.allocation.filename>  
  9.  <value>file:/%HADOOP_HOME%/etc/hadoop/fair-scheduler.xmlvalue>  
  10. lt;/property>  

fair-scheduler.xml配置: 
Xml代码   收藏代码
  1. xml version="1.0"?>  
  2. <allocations>  
  3.   <queue name="test">  
  4.     <minResources>1000 mb, 1 vcoresminResources>  
  5.     <maxResources>5000 mb, 1 vcoresmaxResources>  
  6.     <maxRunningApps>1maxRunningApps>  
  7.     <aclSubmitApps>webmasteraclSubmitApps>  
  8.     <weight>2.0weight>  
  9.     <schedulingPolicy>fairschedulingPolicy>  
  10.     <queue name="test-sub">  
  11.         <aclSubmitApps>webmasteraclSubmitApps>  
  12.         <minResources>500 mb, 1 vcoresminResources>  
  13.     queue>  
  14.   queue>  
  15.   <user name="root">  
  16.     <maxRunningApps>1maxRunningApps>  
  17.   user>  
  18.  <user name="webmaster">  
  19.     <maxRunningApps>1maxRunningApps>  
  20.   user>  
  21.   <user name="gpadmin">  
  22.     <maxRunningApps>5maxRunningApps>  
  23.   user>-->  
  24.   <userMaxAppsDefault>1userMaxAppsDefault>  
  25.  <fairSharePreemptionTimeout>30fairSharePreemptionTimeout>  
  26. allocations>  


关于hadoop的资源调度,请参考下面


影音先锋电影 http://www.iskdy.com/
修改完成后同步分发所有的hadoop节点,并拷贝一份到oozie/conf/hadoop-conf/下面一份,重启hadoop集群和oozie服务,再次执行脚本,发现运行没有问题: 






如果还想配置,solr,hbase,只要在hue.ini里面配置即可,注意hbase的服务,需要启动hbase的thrift端口才行, 
bin/hbase-daemon.sh start thrift 
然后在hue.ini里面配置: hbase_clusters=(Cluster|h1:9090),必须是这种格式,否则hue不会识别
 




配置solr比较简单,支持写上solr的url即可: 





扫码关注微信公众号:我是攻城师(woshigcs),我们一起学习,进步和交流!(woshigcs) 
本公众号的内容是有关搜索和大数据技术和互联网等方面内容的分享,也是一个温馨的技术互动交流的小家园,有什么问题随时都可以留言,欢迎大家来访! 



推荐阅读
  • 开发笔记:sql盲注之报错注入(附自动化脚本)
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了sql盲注之报错注入(附自动化脚本)相关的知识,希望对你有一定的参考价值。 ... [详细]
  • delphi控件大全
    本文章已收录于:delphi控件查询:http:www.torry.nethttp:www.jrsoftware.orgTb97最有名的工具条(ToolBar) ... [详细]
  • IDEA实用插件Lombok
    LombokLombok是一个可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具,通过使用对应的注解,可以在编译源码的时候生成对应的方法。通常,我们所定义的对象和b ... [详细]
  • 如何理解MyBatis动态SQL
    本篇内容主要讲解“如何理解MyBatis动态SQL”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何理解M ... [详细]
  • 问题说明最近看到Spring事务,在学习过程中遇到一个很苦恼问题搭建好Spring的启动环境后出现了一点小问题在启动时候却出现[java.lang.NullPointerExcep ... [详细]
  • 服务器性能优化之网络性能优化
    hi,大家好,今天分享一篇后台服务器性能优 ... [详细]
  • 工作以来接触到的技术流
    2019独角兽企业重金招聘Python工程师标准下面是工作以来接触到的技术平台,以及技术方案。部分在项目中深入过,部分仅选型、实践过。不断补充中. ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 查找给定字符串的所有不同回文子字符串原文:https://www ... [详细]
  • 11月26日,由中国计算机协会(CCF)主办,CCF大数据专家委员会协办,CSDN承办的Hadoop与大数据技术大会(Hadoop&BigDataTechnology ... [详细]
  • ZooKeeper 学习
    前言相信大家对ZooKeeper应该不算陌生。但是你真的了解ZooKeeper是个什么东西吗?如果别人面试官让你给他讲讲ZooKeeper是个什么东西, ... [详细]
  • 什么是大数据lambda架构
    一、什么是Lambda架构Lambda架构由Storm的作者[NathanMarz]提出,根据维基百科的定义,Lambda架构的设计是为了在处理大规模数 ... [详细]
  • 获取原始语音系统图使用matlab生成一个测试用的单频信号,1KHz,1Vrmsclcclearall;closeall;f1000;%定义信号频 ... [详细]
  • Proof (of knowledge) of exponentiation
    1.ProofofexponentiationProofofexponentiation是基于adaptiverootassumption(充分必要条件࿰ ... [详细]
  • 漫画:位运算系列篇(只出现一次的数字)
    今天是小浩算法“365刷题计划”第62天。仍然分享一道关于位运算颇为简单的题型,同时,从明天开始将会提高难度,大家做好准备。01PARTS ... [详细]
author-avatar
青春进行时2502857343
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有